package com.chushouya.manager.service.admin;


import com.chushouya.manager.dto.admin.bonustype.*;
import com.general.framework.core.schema.PageRequest;
import com.general.framework.core.schema.PageResult;
import com.chushouya.manager.dto.admin.bonus.PreviewGrantBonusDTO;
import com.chushouya.manager.dto.admin.bonustype.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 红包管理
 */
public interface BonusTypeService {

    /**
     * 添加红包券
     */
    void save(BonusTypeSaveDTO dto);

    /**
     * 查询红包分页列表
     *
     * @param query 查询条件
     * @return 红包分页列表
     */
    PageResult<BonusTypeListDTO> selectPage(BonusTypeQuery query);

    /**
     * 编辑红包详情
     *
     * @param id 红包id
     */
    BonusTypeDetailDTO detail(Long id);

    /**
     * 编辑红包
     */
    void update(BonusTypeUpdateDTO dto);

    /**
     * 移除红包, 逻辑删除
     *
     * @param id 红包id
     */
    void remove(Long id);

    /**
     * 预生成红包
     *
     */
    void previewGrantBonus(PreviewGrantBonusDTO dto);

    /**
     * 导出未被领取的券码
     *
     * @param bonusTypeId  红包类型id
     */
    void exportNotReceiveTicketNo(HttpServletResponse response,Long bonusTypeId);

    /**
     * 使用券码兑换加价券
     *
     * @param ticketNo 券码
     * @param userId   用户id
     */
    void cashTicket(String ticketNo, Long userId);

    PageResult<BonusTypeTicketListDTO> ticketPage(Long bonusTypeId, PageRequest pageRequest);

    void removeTickets(List<Long> ids);

}
